home *** CD-ROM | disk | FTP | other *** search
/ Kit PC World De Ampliacion De Windows 95 / Kit PC World de ampliacion de Windows 95.iso / internet / sweeper / samples / olecon~1 / framewrk / debug.cpp < prev    next >
Text File  |  1995-11-25  |  4KB  |  123 lines

  1. //=--------------------------------------------------------------------------=
  2. // Debug.Cpp
  3. //=--------------------------------------------------------------------------=
  4. // Copyright  1995  Microsoft Corporation.  All Rights Reserved.
  5. //
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
  7. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
  8. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
  9. // PARTICULAR PURPOSE.
  10. //=--------------------------------------------------------------------------=
  11. //
  12. // contains various methods that will only really see any use in DEBUG builds
  13. //
  14. #ifdef DEBUG
  15.  
  16.  
  17. #include "IPServer.H"
  18. #include <stdlib.h>
  19.  
  20.  
  21. //=--------------------------------------------------------------------------=
  22. // Private Constants
  23. //---------------------------------------------------------------------------=
  24. //
  25. static char szFormat[]  = "%s\nFile %s, Line %d";
  26. static char szFormat2[] = "%s\n%s\nFile %s, Line %d";
  27. LPSTR Deb_lpszAssertInfo = NULL;
  28.  
  29. #define _SERVERNAME_ "CommDlgObjects.DLL"
  30.  
  31. static char szTitle[]  = _SERVERNAME_ " Assertion  (Abort = UAE, Retry = INT 3, Ignore = Continue)";
  32.  
  33.  
  34. //=--------------------------------------------------------------------------=
  35. // Local functions
  36. //=--------------------------------------------------------------------------=
  37. int NEAR _IdMsgBox(LPSTR pszText, LPSTR pszTitle, UINT mbFlags);
  38.  
  39. //=--------------------------------------------------------------------------=
  40. // DisplayAssert
  41. //=--------------------------------------------------------------------------=
  42. // Display an assert message box with the given pszMsg, pszAssert, source
  43. // file name, and line number. The resulting message box has Abort, Retry,
  44. // Ignore buttons with Abort as the default.  Abort does a FatalAppExit;
  45. // Retry does an int 3 then returns; Ignore just returns.
  46. //
  47. VOID DisplayAssert
  48. (
  49.     LPSTR     pszMsg,
  50.     LPSTR     pszAssert,
  51.     LPSTR     pszFile,
  52.     UINT     line
  53. )
  54. {
  55.     char    szMsg[250];
  56.     LPSTR    lpszText;
  57.  
  58.     lpszText = pszMsg;        // Assume no file & line # info
  59.  
  60.     // If C file assert, where you've got a file name and a line #
  61.     //
  62.     if (pszFile) {
  63.  
  64.         // Was additional information supplied?
  65.         //
  66.         if (Deb_lpszAssertInfo) {
  67.  
  68.             // Then format the assert nicely, using this additional information:
  69.             //
  70.             wsprintf(szMsg, szFormat2, (pszMsg&&*pszMsg) ? pszMsg : pszAssert, Deb_lpszAssertInfo, pszFile, line);
  71.             Deb_lpszAssertInfo = NULL;
  72.     } else {
  73.  
  74.             // Then format the assert nicely without the extra information:
  75.             //
  76.             wsprintf(szMsg, szFormat, (pszMsg&&*pszMsg) ? pszMsg : pszAssert, pszFile, line);
  77.         }
  78.  
  79.         lpszText = szMsg;
  80.     }
  81.  
  82.     // Put up a dialog box
  83.     //
  84.     switch (_IdMsgBox(lpszText, szTitle, MB_ICONHAND|MB_ABORTRETRYIGNORE|MB_SYSTEMMODAL)) {
  85.         case IDABORT:
  86.             FatalAppExit(0, lpszText);
  87.             return;
  88.  
  89.         case IDRETRY:
  90.             // call the win32 api to break us.
  91.             //
  92.             DebugBreak();
  93.             return;
  94.     }
  95.  
  96.     return;
  97. }
  98.  
  99.  
  100. //=---------------------------------------------------------------------------=
  101. // Beefed-up version of WinMessageBox.
  102. //=---------------------------------------------------------------------------=
  103. //
  104. int NEAR _IdMsgBox
  105. (
  106.     LPSTR    pszText,
  107.     LPSTR    pszTitle,
  108.     UINT    mbFlags
  109. )
  110. {
  111.     HWND hwndActive;
  112.     int  id;
  113.  
  114.     hwndActive = GetActiveWindow();
  115.  
  116.     id = MessageBox(hwndActive, pszText, pszTitle, mbFlags);
  117.  
  118.     return id;
  119. }
  120.  
  121.  
  122. #endif // DEBUG
  123.